import math
from time import time

# 清屏
def clear():
   print('\n\n\n\n\n\n\n\n\n\n\n')

# 输入格式
def putIn(s):
    str = input("请输入%s>>" % s)
    return str

# 判断是否为数字(包括浮点数)
def isNum(str, flag):
    if str.isdigit():
        return True
    else:
        if(flag == '-'):
            str = str.lstrip(flag)
            if str.isdigit():
                return True
        p_dot = str.find('.')
        if str[:p_dot].isdigit() and str[p_dot+1:].isdigit():
            return True
        return False

def isOdd():
    print('奇数？！偶数？！！')
    str = putIn('整数')
    if str.isdigit():
        a = int(str)
        if (a%2 == 1):
            return "%d是奇数" % a
        else:
            return "%d是偶数" % a
    else:
        return "请输入一个整数！"

def isLeapYear():
    print('是不是闰年呢？')
    str = putIn('年份')
    if str.isdigit():
        a = int(str)
        if (a % 4 == 0 and a % 100 != 0):
            return "%d是普通闰年" % a
        elif(a % 400 == 0):
            return "%d是世纪闰年" % a
        else:
            return "%d，平平无奇呢~" % a
    else:
        return "请输入一个整数！"

def Inverse():
    print('相反数？')
    str = putIn('数字')
    if isNum(str, ''):
        return '-'+str
    elif isNum(str, '-'):
        return str.strip('-')
    else:
        return "数字啊！数字！"

    # 读错题以为翻转输出了，淦！
    # print('逆转一切！')
    # str = putIn('任意字符~')
    # return str[::-1]

def isTriangle():
    print('三角形友情提示，支持任何数字~大概？')
    a = putIn('第一条边')
    b = putIn('第二条边')
    c = putIn('第三条边')
    if (isNum(a,'') and isNum(b,'') and isNum(c,'')):
        a, b, c = float(a), float(b), float(c)
        print(a,b,c)
        if(a+b > c and a+c > b and b+c > a):
            if(a == b == c):
                return "哇哦~等边三角形"
            elif(a == b or b == c or c == a):
                return "等等等等等腰三角形！"
            elif(a**2+b**2 == c**2 or a**2+c**2 == b**2 or c**2+b**2 == a**2):
                return "沉睡于直角三角形的魅力之下吧"
            else:
                return "普通，金色普通，普通三角形"
        else:
            return "不构成三角形，真可惜"
    else:
        return "再给你一个机会好了，数字哦~"

def BMI():
    print('BMI，真是残酷的事实啊~')
    h = putIn('身高/m')
    w = putIn('体重/kg')
    if(isNum(h,'') and isNum(w,'')):
        h, w = float(h), float(w)
        BMI = w/h**2
        if(BMI<18.5):
            return "偏瘦 %.2f" % BMI
        elif(18.5<=BMI<24):
            return "正常 %.2f" % BMI
        elif (24 <= BMI < 28):
            return "超重 %.2f" % BMI
        elif (28 <= BMI < 30):
            return "肥胖 %.2f" % BMI
        elif (28 <= BMI < 40):
            return "重度肥胖 %.2f" % BMI
        elif (40 <= BMI):
            return "极重度肥胖 %.2f" % BMI
        else:
            return "这是个什么情况？ %.2f" % BMI
    else:
        return "不会有人连身高体重都不知道什么意思吧？"

def isPerfectSquare():
    print('貌似很稀有的样子，完全平方数。')
    str = putIn('整数')
    if (str.isdigit()):
        a = int(str)
        range = math.sqrt(a)
        if (a % range == 0):
            return "%d!完全平方数！！！！" % a
        else:
            return "它不是那位大人，真是浪费时间"
    else:
        return "你还想见到完全平方数吗？给我输入整数！"

# 界面
def UI():

    flag = 0
    t = time()

    print("你想干什么？")
    print("> 1 —— 奇偶校验")
    print("> 2 —— 闰年判断")
    print("> 3 —— 相反数")
    print("> 4 —— 三角形判断")
    print("> 5 —— BMI评估")
    print("> 6 —— 完全平方数")
    print('# 请输入上述数字，随后你懂得~')
    flag = input(">>")

    clear() #假装清屏
    print('\n'+switch.get(flag)())  # 执行对应的函数，如果没有就执行默认的函数
    print('\n——执行完成/所用时间:%fs' % (time() - t))
    input('---------按任意键继续......')

# 假借字典实现switch引索
switch = {
    '1' : isOdd,            # 奇偶校验
    '2' : isLeapYear,       # 闰年判断
    '3' : Inverse,          # 相反输出
    '4' : isTriangle,       # 三角形判断
    '5' : BMI,              # BMI评估
    '6' : isPerfectSquare   # 完全平方数
}

while(1):
    UI()